import java.util.*;
/**
 * 任务分组
 * 输入
 * 8 4
 * 0 1
 * 1 2
 * 2 3
 * 4 5
 * 输出
 * 4
 * 解释
 * 第一行 分别代表 任务数n [0,n-1] 输入组数 m = 4
 * 下面是跟 m 个  表示 两个任务可以组合的
 * 然后 (0，1 ，2，3)  (4，5)  (6 7) 构成了4组
 *
 * */
public class 星环 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();  //任务数
        int m = scanner.nextInt();  //m组
        ArrayList<int[]> list = new ArrayList<>();
        int ans = 0;
        for (int i = 0; i < m; i++) {
            list.add(new int[]{scanner.nextInt(),scanner.nextInt()});
        }

        List<HashSet<Integer>> list1 = new ArrayList<>();
        for (int i = 0; i < m; i++) {
            int[] ints = list.get(i);
            boolean contain = false;
            for (int j = 0; j < list1.size(); j++) {
                HashSet<Integer> set = list1.get(j);
                if(set.contains(ints[0]) || set.contains(ints[1])){
                    set.add(ints[0]);
                    set.add(ints[1]);
                    contain = true;
                }
            }
            if(!contain){
                HashSet<Integer> set = new HashSet<>();
                set.add(ints[0]);
                set.add(ints[1]);
                list1.add(set);
            }
        }
        int num = 0;
        for (HashSet<Integer> set : list1){
            num += set.size();
        }

        System.out.println(list1.size() + n-num);

    }
}
